perm filename L1[F8,ALS] blob sn#310378 filedate 1977-10-20 generic text, type T, neo UTF8
     1		     *CHECKERS as of October 20 1977.  EQU's
     2		     * S1 section
     3		     *Resident package addresses
     4		     JOYT    EQU     H'0C00'
     5		     LINE    EQU     H'0FDF'
     6		     SHCB    EQU     H'0FE2'
     7		     INPF    EQU     H'0FE3'
     8		     WTLN    EQU     H'0FE5'
     9		     TXC     EQU     H'0FE8'
    10		     CMRG    EQU     H'0FEA'
    11		     DBNC    EQU     H'0FEB'
    12		     UPI     EQU     H'0FFA'
    13		     JOYI    EQU     H'21AD'
    14		     IJS     EQU     H'22DB'
    15		     SHL     EQU     H'27C6'
    16		     SHR     EQU     H'27D3'
    17		     PUSH    EQU     H'40A9'
    18		     POPS    EQU     H'40BC'
    19		     SPS     EQU     H'40D0'
    20		     WDG     EQU     H'4105'
    21		     WAUD    EQU     H'41C8'
    22		     WAU1    EQU     H'41CC'
    23		     CDS     EQU     H'41D5'
    24		     WMS     EQU     H'4205'
    25		     UDAT    EQU     H'424D'
    26		     TRAN    EQU     H'43CD'
    27		     FCS     EQU     H'43D6'
    28		     WAIT    EQU     H'4501'
    29		     TIR     EQU     H'45DB'
    30		     CLER    EQU     H'4762'
    31		     *Misc. constants
    32		     TCMD    EQU     H'44'
    33		     BCMD    EQU     H'6D'
    34		     TCOL    EQU     H'80'   TEXT COLOR
    35		     ULIN    EQU     H'F5'
    36		     COM     EQU     H'8F7'
    37		     *RAM assignments
    38		     PLY0    EQU     H'0C20'	    Place for player's ply depth choice
    39		     COL0    EQU     H'0C21'	    Place for color choice(next after P
    40		     SELX    EQU     H'0C22'	    SELE exit
    41		     XPOS    EQU     H'0C23'	    XPOSITION(CURSOR)
    42		     YPOS    EQU     H'0C26'	    YPOSITION(CURSOR)
    43		     BFLG    EQU     H'0C27'
    44		     BLNF    EQU     H'0C28'	    Blink flag
    45		     XBLN    EQU     H'0C29'	    X value to blink
    46		     YBLN    EQU     H'0C2A'	    Y value to blink
    47		     BCNT    EQU     H'0C2B'	    Counter used in OKMV
    48		     BKMV    EQU     H'0C2C'	    Data to index book moves
    49		     OBJ0    EQU     H'0C30'	    Board 1, thru H'0E0F'
    50		     TREE    EQU     H'0E10'	    Tree data, thru H'0EFF', Player's b
    51		     TRE2    EQU     H'0E20'	    Machine's first board here
    52		     TRE3    EQU     H'0E30'	    PLY 1 LOCATION
    53		     HSAV    EQU     H'0E59'	    H save location
    54		     PLMD    EQU     H'0E5B'	    Used for temp store of player's mov
    55		     PLMV    EQU     H'0ED0'	    Overlay region used for player's mo
    56		     PLMF    EQU     H'0EE0'	       and move numbers
    57		     MOBS    EQU     H'0F00'	     Mobility and DJ flags (14 bytes)
    58		     OBJ1    EQU     H'0F10'	    Board 2, thru H'0FAF'
    59		     *Scratch pad assignments
    60		     TEMP   EQU     H'8'
    61		     J	    EQU     H'9'
    62		     HU     EQU     H'A'
    63		     HL     EQU     H'B'
    64		     PLOC   EQU     O'3'	    LISU value for ACTIVE and PASSIVE
    65		     KLOC   EQU     O'4'	    LISU value for KING's and special d
    66		     ELOC   EQU     O'5'	    LISU value for EMPTY's area
    67		     ISA    EQU     O'30'	    ISAR value for active area
    68		     ISP    EQU     O'34'	    ISAR value for passive
    69		     ISK    EQU     O'40'	    ISAR value for kings
    70		     ISE    EQU     O'51'	    ISAR value foempty (with offset)
    71		     *Mimimum ply depths
    72		     PLYT   EQU     H'FE'	    Ply depth for Robot Tom (stored as
    73		     PLYD   EQU     H'FD'	    Ply depth for Robot Dick
    74		     PLYH   EQU     H'FC'	    Ply depth for Robot Harry
    75		     *SPECIAL CONSTANTS
    76		     MSK     EQU     H'1'	   X ZOOM bit mask (cmrg)
    77		     X	     EQU     H'1'
    78		     Y	     EQU     H'2'
    79		     VX      EQU     H'3'
    80		     VY      EQU     H'4'
    81		     CHT     EQU     H'3'    CURSOR HEIGHT
    82		     YTST    EQU     H'9'
    83		     XZOP    EQU     H'34'   Line for restore of X zoom
    84		     MAXY    EQU     H'4D'   MAX Y COORD (=H'4F'-CHT)
    85		     *Linkage locations
    86		     SEL2    EQU     H'1900'
    87		       ORG  H'1000'  Initial operations and questions
    88 1000 AA		    DC	    H'AA'
    89 1001 55		    DC	    H'55'
    90 1002 00		    DC	    H'00'   BACKGROUND COLOR
    91 1003 00		    DC	    H'00'   BACKGROUND COLOR
    92 1004 00		    DC	    H'00'   SPACES
    93 1005 00		    DC	    H'00'   SPACES
    94 1006 31 19	    DC	    H'3119' CH
    95 1008 0B 31	    DC	    H'0B31' EC
    96 100A 15 0B	    DC	    H'150B' KE
    97 100C 09 21	    DC	    H'0921' RS
    98 100E 00		    DC	    H'00'   -
    99 100F 00		    DC	    H'00'   -
   100 1010 00		    DC	    H'00'   -
   101 1011 00		    DC	    H'00'   -
   102		     *-*-
   103 1012 28 41 D5	    PI	    CDS     CLEAR DISPLAY
   104 1015 28 22 DB	    PI	    IJS     INITIALIZE JOYSTICK TABLE
   105 1018 62		     LISU    2	    For safety only, can be removed later
   106 1019 6E		     LISL    6
   107 101A 70		     CLR
 **OPERATOR SYNTAX    LINE #   108
   108
   109 101B EC		     XS      S
   110 101C 91 06	     BM      QN1     Is clock running?
   111 101E 20 81	     LI      H'81'   No, so start it
   112 1020 5E		     LR      D,A
   113 1021 72		     LIS     2
   114 1022 5C		     LR      S,A
   115		     *-*-*-*- Initial question session
   116 1023 74	     QN1    LIS     H'4'
   117 1024 50		    LR	    0,A
   118 1025 28 13 DE	    PI	    SEDC    SET MESSAGE LNGTH&LINE POINTER
   119 1028 31		    DS	    1
   120 1029 31		    DS	    1	    SET DEFAULT PLY DEPTH
   121 102A 2A 15 EE	    DCI     SKL
   122 102D 28 42 05	    PI	    WMS     WRITE MESSAGE
   123 1030 28 12 CC	    PI	    RKB     AND DO KEYBOARD READ
   124 1033 25 1F	    CI	    H'1F'
   125 1035 84 06	    BZ	    QN10    IS IT 'DICK'?
   126 1037 25 19	    CI	    H'19'   NO.
   127 1039 94 03	    BNZ     QN11    IF NOT 'HARRY', THEN 'TOM'
   128 103B 31		    DS	    1
   129 103C 31	     QN10   DS	    1
   130 103D 2A 0C 20 QN11   DCI     PLY0
   131 1040 41		    LR	    A,1     GET CORRECT PLY DEPTH
   132 1041 17		    ST		    AND SAVE IT.
   133 1042 30		    DS	    0
   134 1043 30		    DS	    0	    SET FOR BUT TWO LINES
   135 1044 28 41 D5	    PI	    CDS     CLEAR DISPLAY
   136 1047 28 13 DE	    PI	    SEDC    SET LINE POINTER
   137 104A 20 FA	    LI	    H'FA'
   138 104C CC		    AS	    S
   139 104D 5C		    LR	    S,A     SET FOR BUT H'1A' LENGTH
   140 104E 2A 15 D4	    DCI     YMF     DCO TO MESSAGE START
   141 1051 28 42 05	    PI	    WMS     SO WRITE MESSAGE
   142 1054 28 12 CC	    PI	    RKB     READ KEYBOARD
   143 1057 25 2B	    CI	    H'2B'   Is answer an N?
   144 1059 2A 0C 21	  DCI	   COL0
   145 105C 70		  CLR
   146 105D 57		  LR	   7,A	   Black plays first always
   147 105E 84 07	  BZ	   QN13    N means machine first
   148 1060 18		  COM
   149 1061 17		  ST		   COL0←-1, player is black
   150 1062 18		  COM
   151 1063 17		  ST		   SELX←0 always
   152 1064 90 03	  BR	   QN14
   153 1066 17	     QN13 ST		   COL0←0, machine is black
   154 1067 17		  ST		   SELX←0 always
   155 1068 2A 12 E0 QN14 DCI	   BLKM    Table of possible moves
   156 106B 2C		     XDC
   157 106C 2A 0E D0	     DCI     PLMV    List to verify moves
   158 106F 77		     LIS     H'7'
   159 1070 62		     LISU    2
   160 1071 68		     LISL    0
   161 1072 5C		     LR      S,A	     SET TRANSFER COUNT
   162 1073 28 43 CD	     PI      TRAN	     DO TRANSFER
   163 1076 2A 0C 2C	     DCI     BKMV
   164 1079 70		     CLR
   165 107A 17		     ST		       Clear Book move index value
   166 107B 2A 0F EA	    DCI     CMRG
   167 107E 20 65	    LI	    H'65'
   168 1080 17		    ST		    SET FOR X & Y ZOOM
   169 1081 28 47 62	     PI      CLER    TURN OFF CURRENT OBJECTS
   170 1084 28 13 B3	     PI      SURP    SET UM1 REGS AND POINTERS
   171 1087 28 16 F9	     PI      ENIN
   172		     *-*-*- Load SC for initial board
   173 108A 63		     LISU    PLOC	     LOAD SCRATCHPAD AS
   174 108B 6F		     LISL    7		     FOLLOWS:
   175 108C 70		     CLR
   176 108D 5E	     BRDJ    LR      D,A	     O'30'=FF
   177 108E 8F FE	     BR7     BRDJ	     O'31'=F0
   178 1090 18		     COM		     O'32'=0
   179 1091 5D		     LR      I,A	     O'33'=0
   180 1092 5D		     LR      I,A	     O'34'=0
   181 1093 15		     SL      4		     O'35'=0
   182 1094 5D		     LR      I,A	     O'36'=F
   183 1095 6E		     LISL    6		     O'37'=FF
   184 1096 7F		     LIS     H'F'
   185 1097 5D		     LR      I,A
   186 1098 64		     LISU    KLOC
   187 1099 6F		     LISL    H'7'
   188 109A 70		     CLR
   189 109B 5E	     BRDK    LR      D,A	     O'40' thru O'47' = 0
   190 109C 8F FE	     BR7     BRDK
   191 109E 6E		     LISL    6		     Except
   192 109F 20 80	     LI     H'80'	     O'46' to contain H'80'
   193 10A1 5C		     LR      S,A
   194 10A2 2A 0E 20	     DCI     TRE2
   195 10A5 28 17 28	     PI      SCRD	     SR to RAM for machine's first move
   196 10A8 2A 0E 10	     DCI     TREE
   197 10AB 28 17 28	     PI      SCRD	     SR to RAM for player's first move
   198 10AE 28 13 00	     PI      BORD    Generate board image with men
   199 10B1 2A 0C 23	     DCI     XPOS
   200 10B4 70		     LIS     H'0'
   201 10B5 17		     ST			     SET FOR LEFT MOST
   202 10B6 20 03	     LI      H'3'
   203 10B8 17		     ST
   204 10B9 70		     LIS     H'0'
   205 10BA 17		     ST
   206 10BB 2A 0C 26	     DCI     YPOS
   207 10BE 70		     LIS     H'0'
   208 10BF 17		     ST			     AND SET FOR TOPMOST
   209		     *-*-*-*-*-*-*-*-*-*- Start play
   210 10C0 2A 0C 21	     DCI     COL0
   211 10C3 70		     CLR
   212 10C4 8C		     XM
   213 10C5 91 3A	     BM      PMOV	     Player chose Black
   214		     *-*-*- Machine's first move if playing black
   215 10C7 62		     LISU    2
   216 10C8 6D		     LISL    5
   217 10C9 4C		     LR      A,S	     Used as random number
   218 10CA 21 07	     NI      H'7'	     Save last 3 bits
   219 10CC 50		     LR      0,A	     Use this number to select move
   220 10CD 2A 0C 2C	     DCI     BKMV	     Book move index
   221 10D0 15		     SL      4		     Save space for second move
   222 10D1 12		     SR      1
   223 10D2 17		     ST			     Record first move
   224 10D3 2A 0E D0	     DCI     PLMV
   225 10D6 16	     QN17    LM			     Get byte record
   226 10D7 51		     LR      1,A
   227 10D8 41	     QN18    LR      A,1
   228 10D9 F1		     NS      1
   229 10DA 94 04	     BNZ     QN19	     Is this byte exhausted?
   230 10DC 16		     LM			     Step over byte info
   231 10DD 90 F8	     BR      QN17	     Go to next byte record
   232 10DF 52	     QN19    LR      2,A
   233 10E0 24 FF	     AI      H'FF'	     Subtract 1
   234 10E2 F1		     NS      1
   235 10E3 51		     LR      1,A	     byte less rightmost bit
   236 10E4 E2		     XS      2		     This leaves 1 bit in A
   237 10E5 30		     DS      0
   238 10E6 81 F1	     BP      QN18
   239 10E8 56		     LR      6,A	     Save the byte bit
   240 10E9 16		     LM			     Get the byte info
   241 10EA 54		     LR      4,A	     The byte indicator
   242 10EB 2A 0E 20	     DCI     TRE2	     Machine's board is here
   243 10EE 11		     LR      H,DC
   244 10EF 7C		     LIS     H'C'
   245 10F0 8E		     ADC
   246 10F1 46		     LR      A,6
   247 10F2 17		     ST
   248 10F3 44		     LR      A,4
   249 10F4 17		     ST
   250 10F5 29 19 00	     JMP     SEL2	     Go to SELE to make move
   251		       ORG  H'1100'  PMOV  Player's move
   252 1100 28 15 0A PMOV    PI      MVC	     Initiate cursor
   253 1103 2A 0E 10	     DCI     TREE	     Player's board is here
   254 1106 11		     LR      H,DC
   255 1107 70	     MES0    CLR		     "YOUR MOVE"
   256 1108 50	     MES1    LR      0,A	     Identify message
   257 1109 28 12 00	     PI      WMC	     Write message
   258 110C 2A 0C 28	     DCI     BLNF
   259 110F 70		     CLR
   260 1110 17		     ST
   261 1111 10		     LR      DC,H
   262 1112 28 13 FB CUR1    PI      CURS	     Initiate cursor
   263		     *-*- Now X in 1, Y in 2, byte in 3 and byte # in 4
   264 1115 2A 0E D0 OKPI    DCI    PLMV	    Possible moves listing
   265 1118 16	     OKP1    LM			     Get move byte
   266 1119 21 FF	     NI      H'FF'
   267 111B 94 0A	     BNZ     OKP3	     An entry found
   268 111D 45		     LR      A,5	     Byte info
   269 111E 21 10	     NI      H'10'	     Extract J bit
   270 1120 75		     LIS     H'5'	     "PIECE CAN'T MOVE"
   271 1121 84 02	     BZ      OKP2
   272 1123 71		     LIS     H'1'	     "MUST JUMP"
   273 1124 90 E3    OKP2    BR      MES1	     Try again
   274 1126 F3	     OKP3    NS      3		     Compare
   275 1127 94 05	     BNZ     OKP4	     This might be the one
   276 1129 16		     LM			     A cheap way to index
   277 112A 55		     LR      5,A	     Save for jump info
   278 112B 90 EC	     BR      OKP1	     Try again
   279 112D 16	     OKP4    LM			     Next entry is the byte info
   280 112E 55		     LR      5,A	     Save it
   281 112F 12		     SR      1
   282 1130 12		     SR      1
   283 1131 21 03	     NI      H'3'	    Remove the J bit and the direction
   284 1133 E4		     XS      4		     Does it match?
   285 1134 94 E3	     BNZ     OKP1	     Try again
   286 1136 2A 0E 5B	     DCI     PLMD	     Save data as to starting square
   287 1139 41		     LR      A,1	     X
   288 113A 17		     ST
   289 113B 42		     LR      A,2	     Y
   290 113C 17		     ST
   291 113D 43		     LR      A,3	     Byte
   292 113E 17		     ST
   293 113F 44		     LR      A,4	     Byte info
   294 1140 17		     ST
   295 1141 20 FC	     LI      -H'4'
   296 1143 2A 0C 2B	     DCI     BCNT	     Counter
   297 1146 17		     ST
   298 1147 2A 0C 28	     DCI     BLNF	     Blink flag
   299 114A 71		     LIS     H'1'	     Set on
   300 114B 17		     ST
   301 114C 41		     LR      A,1	     Save X value
   302 114D 17		     ST			     in XBLN
   303 114E 42		     LR      A,2	     Save Y value
   304 114F 17		     ST			     in YBLN
   305 1150 28 13 FB CUR2    PI       CURS	      USE  CTMP TO DEBUG
   306 1153 2A 0E 5D	     DCI     PLMD+2	     Restore initial values
   307 1156 16		     LM
   308 1157 53		     LR      3,A	     for BYTE
   309 1158 16		     LM
   310 1159 54		     LR      4,A	     and BYTE number
   311		     *Now test indicated move for legality
   312 115A 2A 0E 5B OKMV    DCI     PLMD	     Saved data location
   313 115D 16		     LM			     Get the old X value
   314 115E 18		     COM
   315 115F 1F		     INC
   316 1160 C1		     AS      1		     This gives us the change in X
   317 1161 84 6D	     BZ      NON2	     Illegal
   318 1163 51		     LR      1,A	     Save the difference
   319 1164 81 03	     BP      OKM1
   320 1166 18		     COM
   321 1167 1F		     INC
   322 1168 50	     OKM1    LR      0,A	     |∂X|
   323 1169 25 02	     CI      H'2'
   324 116B 91 66	     BM      NON3	     Too far
   325 116D 70		     CLR		     Anticipate normal move
   326 116E 94 03	     BNZ     OKM2
   327 1170 20 10	     LI      H'10'	     Set Jump bit
   328 1172 56	     OKM2    LR      6,A	     save byte info here
   329 1173 16		     LM			     Get the old Y value
   330 1174 18		     COM
   331 1175 1F		     INC
   332 1176 C2		     AS      2
   333 1177 52		     LR      2,A	     Change in Y
   334 1178 91 03	     BM      OKM3
   335 117A 18		     COM
   336 117B 1F		     INC
   337 117C C0	     OKM3    AS      0
   338 117D 94 51	     BNZ     NON2	     |∂X|≠|∂Y|
   339 117F 42		     LR      A,2
   340 1180 F2		     NS      2
   341 1181 81 04	     BP      OKM4
   342 1183 72		     LIS     H'2'	     Backward bit
   343 1184 C6		     AS      6
   344 1185 56		     LR      6,A
   345 1186 41	     OKM4    LR      A,1
   346 1187 F1		     NS      1
   347 1188 91 04	     BM      OKM5
   348 118A 71		     LIS     H'1'	     Left bit
   349 118B C6		     AS      6
   350 118C 56		     LR      6,A
   351 118D 44	     OKM5    LR      A,4	     Get initial Byte #
   352 118E 13		     SL      1		     Shift it left to position
   353 118F 13		     SL      1
   354 1190 C6		     AS      6		     Add in the J and Direction bits
   355 1191 56		     LR      6,A	    Final byte info from cursor
   356 1192 2A 0E D0	     DCI    PLMV	    Possible moves listing
   357 1195 78		     LIS     H'8'	     7 moves possible
   358 1196 50		     LR      0,A
   359 1197 70	     OKM6    CLR
   360 1198 8C		     XM
   361 1199 84 2C	     BZ      NONO	     No more entries
   362 119B 51		     LR      1,A
   363 119C 16		     LM
   364 119D 55		     LR      5,A	     Save byte info
   365 119E 70	     OKM7    CLR
   366 119F E1		     XS      1
   367 11A0 84 F6	     BZ      OKM6	     Last bit tested
   368 11A2 52		     LR      2,A	     We'll need it again
   369 11A3 24 FF	     AI      H'FF'	     Subtract 1
   370 11A5 F1		     NS      1
   371 11A6 51		     LR      1,A	     Byte with bit removed
   372 11A7 E2		     XS      2		     Get extracted bit
   373 11A8 30		     DS      0		     Count tries
   374 11A9 F3		     NS      3		     Does it check with 3
   375 11AA 84 F3	     BZ      OKM7	     Not in table entry, try again
   376 11AC 45		     LR      A,5	     But does byte info agree?
   377 11AD E6		     XS      6		     Compare 6 with table value
   378 11AE 94 EF	     BNZ     OKM7	     No so count remaining bits in 1
   379 11B0 77		     LIS     H'7'	     Found, so reorder count
   380 11B1 E0		     XS      0		     order from 0 thru 6
   381 11B2 2A 0C 2C	     DCI     BKMV
   382		     *	     LR      Q,DC		3 inst. to go in with 3rd book move fix
   383		     *	     OM			     Save info in left half, if any
   384		     *	     LR      DC,Q
   385 11B5 17		     ST			     Save move count for book move entr
   386 11B6 2A 0E 10	     DCI     TREE	     Store final values
   387 11B9 11		     LR      H,DC
   388 11BA 7C		     LIS     H'C'
   389 11BB 8E		     ADC
   390 11BC 43		     LR      A,3
   391 11BD 17		     ST			     Store byte
   392 11BE 46		     LR      A,6
   393 11BF 17		     ST			     And byte info
   394 11C0 28 15 0A	     PI      MVC	     Turn off cursor
   395 11C3 29 19 00	     JMP     SEL2
   396 11C6 45	     NONO    LR      A,5
   397 11C7 21 10	     NI      H'10'	     A jump required?
   398 11C9 72		     LIS     H'2'
   399 11CA 84 08	     BZ      NON4
   400 11CC 71		     LIS     H'1'
   401 11CD 90 05	     BR      NON4
   402 11CF 72	     NON2    LIS     H'2'
   403 11D0 90 02	     BR      NON4
   404 11D2 73	     NON3    LIS     H'3'
   405 11D3 50	     NON4    LR      0,A
   406 11D4 2A 0C 2B	     DCI     BCNT
   407 11D7 16		     LM
   408 11D8 1F		     INC
   409 11D9 2A 0C 2B	     DCI     BCNT
   410 11DC 17		     ST
   411 11DD 91 04	     BM      NON5
   412 11DF 29 11 07	     JMP     MES0
   413 11E2 28 12 00 NON5    PI      WMC
   414 11E5 29 11 50	     JMP     CUR2
   415		       ORG  H'1200'  WMC RKB BLKM REDM
   416		     *-*-*- Message writing, uses R0, 1, SC O'24'
   417		     * calls UPDATE routine. Message # in 0.
   418 1200 08	     WMC     LR      K,P     SAVE RETURN ADDRESS
   419 1201 28 40 A9	     PI      PUSH    PUSH ONTO STACK
   420 1204 28 17 16	     PI      DAI     DISABLE INTERRUPTS
   421 1207 2A 08 72	     DCI     H'872'
   422 120A 20 82	     LI      H'82'
   423 120C 17		     ST
   424 120D 2A 0E 59	     DCI     HSAV
   425 1210 4A		     LR      A,HU
   426 1211 17		     ST
   427 1212 4B		     LR      A,HL
   428 1213 17		     ST
   429 1214 28 16 2E	     PI      MWAD    WAIT, THEN UPDATE
   430 1217 2A 12 62	     DCI     WMCA    DCO TO MESSAGE ADDRESS START
   431 121A 40		     LR      A,0     GET MESSAGE NUMBER
   432 121B 13		     SL      1
   433 121C C0		     AS      0
   434 121D 8E		     ADC	     ADD 3XNUMBER TO DCO
   435 121E 62		     LISU    2
   436 121F 6C		     LISL    4	     SET ISAR TO O'24'
   437 1220 16		     LM
   438 1221 5C		     LR      S,A     SET MESSAGE LENGTH
   439 1222 16		     LM
   440 1223 06		     LR      QU,A
   441 1224 16		     LM
   442 1225 07		     LR      QL,A    MESSAGE ADDRESS INTO Q
   443 1226 2A 0F DF	     DCI     LINE
   444 1229 20 50	     LI      H'50'
   445 122B 17		     ST		     SET PROPER LINE NUMBER
   446 122C 2A 0E 5F	     DCI     H'0E5F' DCO TO MESSAGE BUILD AREA
   447 122F 20 70	     LI      H'70'
   448 1231 51		     LR      1,A     SET COUNTER
   449 1232 70		     CLR	     CLEAR ACC
   450 1233 17	     WMC1    ST
   451 1234 31		     DS      1
   452 1235 94 FD	     BNZ     WMC1    CLEAR TEXT AREA
   453 1237 28 16 2E	     PI      MWAD    WAIT, THEN DO UPDATE
   454 123A 2A 08 72	     DCI     H'872'
   455 123D 72		     LIS     H'2'
   456 123E 17		     ST		     TURN OBJECT ON
   457 123F 0F		     LR      DC,Q    SET ADDRESS INTO DCO
   458 1240 28 42 05	     PI      WMS     WRITE MESSAGE
   459 1243 28 16 2E	     PI      MWAD    WAIT, THEN UPDATE
   460 1246 40		   LR	 A,0	   Get message #
   461 1247 25 05	   CI	 H'5'
   462 1249 81 07	   BP	 WMC2	   Does not require #
   463 124B 4B		   LR	 A,HL
   464 124C 14		   SR	 4
   465 124D 58		   LR	 TEMP,A
   466 124E 28 41 05	   PI	 WDG	   Write single digit
   467 1251 28 16 2E WMC2  PI	 MWAD
   468 1254 2A 0E 59	   DCI	 HSAV
   469 1257 16		   LM
   470 1258 5A		   LR	 HU,A
   471 1259 16		   LM
   472 125A 5B		   LR	 HL,A
   473 125B 28 16 F9	     PI      ENIN    ENABLE INTERRUPTS ONCE MORE
   474 125E 28 40 BC	     PI      POPS    POP RETURN ADDRESS
   475 1261 0C		     PK		     AND RETURN
   476		     *-*-*-*-*-*-*-*-*-*
   477		     * DATA FOR WMC
   478		     *
   479 1262 0A	     WMCA    DC      H'A'    YOUR MOVE!      0
   480 1263 12		     DC      YRMV:
   481 1264 7D		     DC      YRMV.
   482 1265 0A		     DC      H'A'    MUST JUMP	     1
   483 1266 12		     DC      MJM:
   484 1267 87		     DC      MJM.
   485 1268 0D		     DC      H'D'    ILLEGAL MOVE    2
   486 1269 12		     DC      MIM:
   487 126A 91		     DC      MIM.
   488 126B 08		     DC      H'8'    TOO FAR	     3
   489 126C 12		     DC      TFM:
   490 126D 9E		     DC      TFM.
   491 126E 07		     DC      H'7'   MY MOVE		4
   492 126F 12		      DC     MYMV:
   493 1270 A6		      DC     MYMV.
   494 1271 10		     DC      H'10'   PIECE CANNOT MOVE	5
   495 1272 12		     DC      PCMM:
   496 1273 AD		     DC      PCMM.
   497 1274 05		    DC	    H'5'     SELE	      6
   498 1275 12		    DC	    SELM:
   499 1276 BD		    DC	    SELM.
   500 1277 05		    DC	    H'5'     SELY	      7
   501 1278 12		    DC	    SELY:
   502 1279 C2		    DC	    SELY.
   503 127A 05		    DC	    H'5'     FIND	      8
   504 127B 12		    DC	    FINM:
   505 127C C7		    DC	    FINM.
   506 127D 05 13    YRMV    DC      H'0513' YOur move
   507 127F 03 09	     DC      H'0309' UR
   508 1281 00		     DC      H'0'    SPACE
   509 1282 29 13	     DC      H'2913' MO
   510 1284 2F 0B	     DC      H'2F0B' VE
   511 1286 04		     DC      H'04'   !
   512 1287 29 0B    MJM     DC      H'290B' MUst jump
   513 1289 21 07	     DC      H'2107' ST
   514 128B 00		     DC      H'0'    SPACE
   515 128C 17 03	     DC      H'1703' JU
   516 128E 29 25	     DC      H'2925' MP
   517 1290 04		     DC      H'04'   !
   518 1291 01 27    MIM     DC      H'0127' ILlegal move
   519 1293 27 0B	     DC      H'270B' LE
   520 1295 1B 11	     DC      H'1B11' GA
   521 1297 27 00	     DC      H'2700' L SPACE
   522 1299 29 13	     DC      H'2913' MO
   523 129B 2F 0B	     DC      H'2F0B' VE
   524 129D 04		     DC      H'04'   !
   525 129E 07 13    TFM     DC      H'0713' TO far
   526 12A0 13 00	     DC      H'1300' O SPACE
   527 12A2 1D 11	     DC      H'1D11' FA
   528 12A4 09 04	     DC      H'0904' R!
   529 12A6 29 05    MYMV    DC      H'2905' MY move
   530 12A8 00		      DC     H'0'     -
   531 12A9 29 13	     DC      H'2913' MO
   532 12AB 2F 0B	     DC      H'2F0B' VE
   533 12AD 25 01    PCMM    DC      H'2501' PIece can't move
   534 12AF 0B 31	     DC      H'0B31' EC
   535 12B1 0B 00	     DC      H'0B00' E SPACE
   536 12B3 31 11	     DC      H'3111' CA
   537 12B5 2B 39	     DC      H'2B39' N'
   538 12B7 07 00	     DC      H'0700' T SPACE
   539 12B9 29 13	     DC      H'2913' MO
   540 12BB 2F 0B	     DC      H'2F0B' VE
   541 12BD 21 0B    SELM    DC      H'210B'  SEle
   542 12BF 27 0B	    DC	    H'270B'  LE
   543 12C1 00		    DC	    H'0'     -
   544 12C2 21 0B    SELY    DC      H'210B'  SEly
   545 12C4 27 05	    DC	    H'2705'  LY
   546 12C6 00		    DC	    H'0'     -
   547 12C7 1D 01    FINM   DC	    H'1D01'   FInd
   548 12C9 2B 1F	    DC	    H'2B1F'   ND
   549 12CB 00		    DC	     H'0'     -
   550		     *-*-*- Read keyboard
   551 12CC 08	     RKB    LR	    K,P		     Read keyboard
   552 12CD 28 40 A9	    PI	    PUSH
   553 12D0 62		    LISU    2
   554 12D1 6C		    LISL    4	    SET ISAR FOR DELAY TIMER
   555 12D2 70		    LIS     H'0'
   556 12D3 5C		    LR	    S,A     SET FOR MAX DELAY
   557 12D4 28 43 D6 RKB1   PI	    FCS     FETCH CHARACTER
   558 12D7 84 FC	    BZ	    RKB1    NULL INPUT?
   559 12D9 91 FA	    BM	    RKB1    NO. DEBOUNCED INPUT?
   560 12DB 28 40 BC	    PI	    POPS    YES. POP RETURN ADDRESS
   561 12DE 48		    LR	    A,8     GET KEYBOARD INPUT
   562 12DF 0C		    PK		    AND RETURN
   563		     *-*-*- Initial moves for black
   564 12E0 F0	     BLKM   DC	    B'11110000'      4 pieces
   565 12E1 04		    DC	    B'00000100'      Byte 1, RF
   566 12E2 E0		    DC	    B'11100000'      3 pieces
   567 12E3 05		    DC	    B'00000101'      Byte 1, LF
   568 12E4 40		    DC	    B'01000000'      11-15 repeat to give
   569 12E5 04		    DC	    B'00000100'      a slight preference
   570 12E6 00		    DC	    H'00'
   571		     *-*-*- Initial moves for red
   572 12E7 07	     REDM   DC	    B'00000111'      3 pieces
   573 12E8 0A		    DC	    B'00001010'      Byte 2, RB
   574 12E9 0F		    DC	    B'00001111'      4 pieces
   575 12EA 0B		    DC	    B'00001011'      Byte 2, LB
   576 12EB 00		    DC	    H'00'
   577		       ORG  H'1300'  BORD
   578		     *-*-*-  Generate board image
   579 1300 08	     BORD   LR	    K,P
   580 1301 20 FF	    LI	    H'FF'
   581 1303 53		    LR	    3,A     REG3=FF
   582 1304 2A 0C 30	    DCI     OBJ0    BRD1 START ADDRESS
   583 1307 72		    LIS     H'2'    FLAG FOR BOR
   584 1308 54		    LR	    4,A     SET REG 4 = 2
   585 1309 76		    LIS     H'6'
   586 130A 50	     BRD4   LR	    0,A     REG0 = 6 ROWS
   587 130B 7A	     BRD3   LIS     H'A'
   588 130C 51		    LR	    1,A     REG 1 = 10 LINE/ROW
   589 130D 74	     BRD2   LIS     H'4'
   590 130E 52		    LR	    2,A     REG2=SQ PAIRS/ROW
   591 130F 43	     BRD1   LR	    A,3
   592 1310 17		    ST		    STORE IN BRD
   593 1311 18		    COM
   594 1312 17		    ST		    NEXT IS COMPL. OF FIRST
   595 1313 32		    DS	    2
   596 1314 94 FA	    BNZ     BRD1    MORE FOR THIS ROW
   597 1316 31		    DS	    1	    NO, ALL LINE DONE
   598 1317 94 F5	    BNZ     BRD2
   599 1319 43		    LR	    A,3     DONE A TIMES YET
   600 131A 18		    COM
   601 131B 53		    LR	    3,A
   602 131C 30		    DS	    0	    DEC ROW COUNT
   603 131D 94 ED	    BNZ     BRD3    ALL ROWS DONE?
   604 131F 34		    DS	    4
   605 1320 84 07	    BZ	    BRD5    BOTH OBJECTS DONE?
   606 1322 2A 0F 10	    DCI     OBJ1    NO,GET BORD2 ADDRS.
   607 1325 72		    LIS     H'2'
   608 1326 90 E3	    BR	    BRD4    REG0=2
   609		     *-*-*-  Now put pieces in image
   610 1328 63	     BRD5    LISU    3		     Pieces are here
   611 1329 71		     LIS     H'1'	     1 for red pieces (stored first)
   612 132A 54		     LR      4,A	     Piece, (1 Red, 0 Black, -1 King)
   613 132B 2A 0C 21	     DCI     COL0
   614 132E 70		     CLR		     CLEAR ACC
   615 132F 8C		     XM			     IN W/STATUS
   616 1330 50		     LR      0,A
   617 1331 6F		     LISL    O'7'	     Decrement and shift right
   618 1332 94 02	     BNZ      MEN1	      if COL0 is FF (BLACK at bottom of
   619 1334 68		     LISL    O'0'	     Increment and shift left
   620 1335 73	     MEN1    LIS     H'3'	      if COL0 is 0 (Black at top of scr
   621 1336 51		     LR      1,A	     To count bytes
   622 1337 2B		     NOP
   623 1338 2B		     NOP
   624 1339 2B		     NOP
   625 133A 2B		     NOP
   626 133B 77	     MEN2    LIS     H'7'
   627 133C 52		     LR      2,A	     To count bits
   628 133D 2A 15 B3	     DCI     TAB1	     Byte location table
   629 1340 41		     LR      A,1	     This byte number
   630 1341 13		     SL      1		     Locations occupy 2 bytes each
   631 1342 8E		     ADC
   632 1343 16		     LM			     Get the byte location
   633 1344 06		     LR      QU,A	     and save it in Q
   634 1345 16		     LM
   635 1346 07		     LR      QL,A
   636 1347 40		     LR      A,0
   637 1348 F0		     NS      0
   638 1349 94 11	     BNZ     MEN5	     Decrement and shift right if COL0
   639 134B 4D		     LR      A,I	     Increment and shift left if COL0 i
   640 134C 2B		     NOP
   641 134D 2B		     NOP
   642 134E 2B		     NOP
   643 134F 2B		     NOP
   644 1350 90 03	     BR      MEN4
   645 1352 43	     MEN3    LR      A,3
   646 1353 13		     SL      1		     and shift left
   647 1354 53	     MEN4    LR      3,A
   648 1355 21 80	     NI      H'80'	     (done this way for symry
   649 1357 84 3E	     BZ      MEN9
   650 1359 90 0F	     BR      MEN8
   651 135B 4E	     MEN5    LR      A,D	     Decrement if COL0 is FF
   652 135C 2B		     NOP
   653 135D 2B		     NOP
   654 135E 2B		     NOP
   655 135F 2B		     NOP
   656 1360 90 03	     BR      MEN7
   657 1362 43	     MEN6    LR      A,3
   658 1363 12		     SR      1		     and shift right
   659 1364 53	     MEN7    LR      3,A
   660 1365 21 01	     NI      H'1'
   661 1367 84 2E	     BZ      MEN9
   662 1369 2A 15 BB MEN8    DCI     TAB2	     Relative-locations-of-squares tabl
   663 136C 42		     LR      A,2	     This square
   664 136D 8E		     ADC
   665 136E 16		     LM			     Get square displacement
   666 136F 0F		     LR      DC,Q	     Recall the location for the input
   667 1370 8E		     ADC		     This is the square position
   668 1371 44		     LR      A,4	     Identify type of piece
   669 1372 F4		     NS      4
   670 1373 91 11	     BM      PUTK	     To put down a king
   671 1375 74		     LIS     H'4'	     Prepare for a piece
   672 1376 55		     LR      5,A	     To count lines
   673 1377 20 20	     LI      H'20'	     Skip the rst 4 lines (4*8)
   674 1379 8E		     ADC
   675 137A 2C		     XDC
   676 137B 2A 15 CB	     DCI     BLKP	     Anticipate a black piece
   677 137E 84 0E	     BZ      PUTL	     A black piece (status bit still ok
   678 1380 2A 15 C6	     DCI     REDP	     No, it's a red piece
   679 1383 90 09	     BR      PUTL
   680 1385 72	     PUTK    LIS     H'2'	     Only 3 lines for a crown
   681 1386 55		     LR      5,A
   682 1387 78		     LIS     H'8'	     To skip 1 line
   683 1388 8E		     ADC
   684 1389 2C		     XDC
   685 138A 2A 15 C3	     DCI     KING
   686 138D 16	     PUTL    LM			     Put loop
   687 138E 2C		     XDC
   688 138F 17		     ST
   689 1390 77		     LIS     H'7'	     To next line on screen (less incre
   690 1391 8E		     ADC
   691 1392 2C		     XDC
   692 1393 35		     DS      5
   693 1394 81 F8	     BP      PUTL	     Loop
   694 1396 32	     MEN9    DS      2
   695 1397 91 07	     BM      ME10
   696 1399 40		     LR      A,0
   697 139A F0		     NS      0
   698 139B 94 C6	     BNZ     MEN6	     Shift right if COL0 is FF
   699 139D 90 B4	     BR      MEN3	     Shift left if COL0 is 0
   700 139F 31	     ME10    DS      1
   701 13A0 81 9A	     BP      MEN2
   702 13A2 44		     LR      A,4
   703 13A3 F4		     NS      4
   704 13A4 91 0D	     BM      BDEX	     Exit from board routine
   705 13A6 34		     DS      4
   706 13A7 81 8D	     BP      MEN1	     Go round again for black pieces
   707 13A9 64		     LISU    H'4'	     Get set for kings
   708 13AA 40		     LR      A,0
   709 13AB F0		     NS      0
   710 13AC 6B		     LISL    H'3'	     Decrementing case
   711 13AD 94 87	     BNZ     MEN1	     Dedrement and shift right if COL0
   712 13AF 68		     LISL    H'0'	     Incrementing case
   713 13B0 90 84	     BR      MEN1	     Increment and shift left if COL0 i
   714 13B2 0C	     BDEX    PK
   715		     *-*-*-*-*-*-*-*-*-*-*-*-*-*
   716		     *	    SURP SETS UM1 REGS & PTRS
   717		     *
   718 13B3 08	     SURP    LR      K,P	     SAVE RETURN ADDRESS
   719 13B4 28 40 A9	     PI      PUSH	     AND PUSH IT ONTO STACK
   720 13B7 28 47 62	     PI      CLER	     CLER UM1 REGISTERS
   721 13BA 2A 0F FA	     DCI     UPI	     DCO TO UPDATE CONTROLS
   722 13BD 73		     LIS     H'3'
   723 13BE 17		     ST			     SET INTO COUNT
   724 13BF 70		     CLR
   725 13C0 17		     ST			     SET FOR FULL INIT
   726 13C1 20 15	     LI      INIT:
   727 13C3 17		     ST
   728 13C4 20 95	     LI      INIT.
   729 13C6 17		     ST			     AND SET ADDRESS
   730 13C7 28 16 2E	     PI      MWAD	     WAIT, THEN UPDATE
   731 13CA 75		     LIS     H'5'
   732 13CB 5C		     LR      S,A	     GET TRANSFER COUNT
   733 13CC 2A 13 D9	     DCI     BDAT	     SET SOURCE
   734 13CF 2C		     XDC		     INTO DC1
   735 13D0 2A 0F FB	     DCI     UPI+1	     DESTINATION
   736 13D3 28 43 CD	     PI      TRAN	     TRANSFER DATA
   737 13D6 29 41 CC	     JMP     WAU1	     WAIT, DO UPDATE, RESET ISAR&RET.
   738		     *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   739		     *	     UPDATE CONTROL DATA     *
   740		     *
   741 13D9 01	     BDAT    DC      H'1'	     FLAG SET SHORT UPDATE
   742 13DA 15		     DC      UDIT:
   743 13DB AA		     DC      UDIT.
   744 13DC 15		     DC      UDIT:
   745 13DD AA		     DC      UDIT.
   746		     *-*-*- SEDC TABL CURS BYDT MVC AMD BLNK
   747		     * Set message length and line pointer
   748 13DE 2A 0F DF SEDC   DCI     LINE    DCO TO LINE POINTER
   749 13E1 72		    LIS      H'2'
   750 13E2 15		    SL	   4	    SET FOR SECOND LINE
   751 13E3 17		    ST
   752 13E4 40		    LR	   A,0
   753 13E5 15		    SL	   4
   754 13E6 6C		    LISL   4
   755 13E7 5C		    LR	   S,A	    AND SET MESSAGE LENGTH
   756 13E8 70		    CLR		    CLEAR ACC
   757 13E9 51		    LR	   1,A	    AND SET DEFAULT RESULT
   758 13EA 1C		    POP		    N RETURN
   759		     *-*-*- Address table for MVC*
   760 13EB 0C 30    TABL   DC	    H'0C30'
   761 13ED 0C 80	    DC	    H'0C80'
   762 13EF 0C D0	    DC	    H'0CD0'
   763 13F1 0D 20	    DC	    H'0D20'
   764 13F3 0D 70	    DC	    H'0D70'
   765 13F5 0D C0	    DC	    H'0DC0'
   766 13F7 0F 10	    DC	    H'0F10'
   767 13F9 0F 60	    DC	    H'0F60'
   768		     *-*-*- To move cursor, uses
   769		     *SC0,1,2,3,4,HU,Q,K,W, SC20-24.
   770 13FB 08	     CURS   LR	   K,P	    SAVE RETURN ADDRESS
   771 13FC 28 40 A9	    PI	   PUSH     AND PUSH IT ON TO STACK
   772 13FF 28 17 16	    PI	   DAI	    DISABLE INTERRUPT DRIVEN UPDATE
   773 1402 28 16 2E MAP0   PI	   MWAD     WAIT, THEN UPDATE
   774 1405 71		    LIS    H'1'     YES, CAN START JOYREAD
   775 1406 5A		    LR	   HU,A     SET FOR HORIZONTAL POT
   776 1407 28 21 AD	    PI	   JOYI     AND READ
   777 140A 53		    LR	   VX,A     SAVE RESULT IN VX
   778 140B 70		    LIS    H'0'
   779 140C 5A		    LR	   HU,A     SET FOR VERTICAL POT
   780 140D 28 21 AD	    PI	   JOYI
   781 1410 50		    LR	   0,A	    SAVE IN REG 0
   782 1411 28 15 46	    PI	   AMAP     CONVERT TO PROPER VELOCITY
   783 1414 54		    LR	   VY,A     SAVE RESULT
   784 1415 43		    LR	   A,VX
   785 1416 50		    LR	   0,A	  NOW GET UNCOVERTED VX INTO R0
   786 1417 28 15 46	    PI	   AMAP     CONVERT IT
   787 141A 53		    LR	   VX,A     AND SAVE IT
   788 141B 28 16 2E	    PI	   MWAD     WAIT, THEN UPDATE
   789 141E 28 15 56	    PI	   BLNK      To blink code (on)
   790 1421 74		    LIS    H'4'
   791 1422 50		    LR	   0,A
   792 1423 28 16 2E MP01   PI	   MWAD
   793 1426 30		    DS	   0
   794 1427 94 FB	    BNZ    MP01
   795 1429 28 15 56	    PI	   BLNK      To blink code (off)
   796 142C 70		    CLR		    CLEAR ACC
   797 142D E3		    XS	   VX	    VX IN W/STATUS
   798 142E 84 49	    BZ	   MAP7     NON-NULL X COMPONENT?
   799 1430 2A 0C 23	    DCI    XPOS     YES
   800 1433 16		    LM
   801 1434 51		    LR	   X,A	    SET CURRENT X POSITION
   802 1435 62		    LISU   2
   803 1436 68		    LISL   0
   804 1437 70		    CLR
   805 1438 5D		    LR	   I,A	    SP20<=0
   806 1439 16		    LM
   807 143A 5D		    LR	   I,A	    SP21<=NON NULL LEAD MASK
   808 143B 16		    LM
   809 143C 5C		    LR	   S,A	    SP22<=TRAILING MASK
   810 143D 70		    CLR
   811 143E E3		    XS	   VX	    VX IN W/STATUS
   812 143F 91 10	    BM	   MAP3     GOING LEFT?
   813 1441 28 27 D3	    PI	   SHR	    SHIFT RIGHT ONE
   814 1444 77		    LIS    H'7'     NO, GOING RIGHT.
   815 1445 E1		    XS	   X
   816 1446 94 24	    BNZ    MAP5     IN RH MOST BOX?
   817 1448 6A		    LISL   2	    YES
   818 1449 EC		    XS	 S
   819 144A 84 20	    BZ	   MAP5     TRIED TO GO TOO FAR?
   820 144C 70	     MAP2   CLR		    YES.
   821 144D 53		    LR	   VX,A     CLEAR X VELOCITY
   822 144E 90 29	    BR	   MAP7     AND CHECK Y
   823 1450 28 27 C6 MAP3   PI	   SHL	    SHIFT LEFT ONE
   824 1453 70		    CLR
   825 1454 E1		    XS	   X
   826 1455 94 05	    BNZ    MAP4     IN LH MOST BOX?
   827 1457 68		    LISL   0	    YES
   828 1458 EC		    XS	   S
   829 1459 94 F2	    BNZ    MAP2     TRIED TO GO TOO FAR?
   830 145B 68	     MAP4   LISL   0
   831 145C 70		    CLR
   832 145D EC		    XS	   S
   833 145E 84 19	    BZ	   MAP7     IS SP20 NULL?
   834 1460 69		    LISL   1	    NO.
   835 1461 4D		    LR	   A,I
   836 1462 5C		    LR	   S,A
   837 1463 68		    LISL   0
   838 1464 4D		    LR	   A,I
   839 1465 5E		    LR	   D,A
   840 1466 70		    CLR
   841 1467 5C		    LR	   S,A	    SP22<=SP21,SP21<=SP20,SP20<=0,THAT ORDER
   842 1468 31		    DS	   X	    AND DECREMENT X COUNT
   843 1469 90 0E	    BR	   MAP7     NOW GO CHECK Y
   844 146B 69	     MAP5   LISL   1
   845 146C 70		    CLR		    CLEAR ACC
   846 146D EC		    XS	   S
   847 146E 94 09	    BNZ    MAP7     IS SP21=0?
   848 1470 6A		    LISL   2
   849 1471 4E		    LR	   A,D
   850 1472 5D		    LR	   I,A
   851 1473 70		    CLR
   852 1474 5E		    LR	   D,A	    SP21<=SP22,SP22<=0, THAT ORDER
   853 1475 71		    LIS    H'1'
   854 1476 C1		    AS	   X
   855 1477 51		    LR	   X,A	    INCREMENT X COUNT
   856 1478 70	     MAP7   CLR
   857 1479 E4		    XS	   VY
   858 147A 84 10	    BZ	   MAP9     VY=0?
   859 147C 2A 0C 26	    DCI    YPOS     NO, SET DCO TO LAST Y POSITION
   860 147F 88		    AM		    UPDATE Y COORD
   861 1480 91 05	    BM	   MP7A    Result Y is neg?
   862 1482 25 4D	    CI	   MAXY     COMPARE W/MAX ALLOWED Y
   863 1484 82 05	    BC	   MAP8     NEW Y>MAX ALLOWED VALUE?
   864 1486 70	     MP7A   CLR		    YES
   865 1487 54		    LR	   VY,A     RESET VY
   866 1488 90 02	    BR	   MAP9
   867 148A 52	     MAP8   LR	   Y,A	    SET NEW Y
   868 148B 44	     MAP9   LR	   A,VY     GET VY
   869 148C 13		    SL	   1
   870 148D E3		    XS	   VX
   871 148E 84 1E	    BZ	   MP12     ANY MOVEMENT?
   872 1490 28 15 0A	    PI	   MVC	    YES, REMOVE OLD POSITION
   873 1493 70		    CLR
   874 1494 E4		    XS	   VY
   875 1495 84 0A	    BZ	   MP10     ANY Y MOVEMENT?IF NOT, MUST HAVE VX NE 0
   876 1497 2A 0C 26	    DCI    YPOS
   877 149A 42		    LR	   A,Y	    IS, SO RESET
   878 149B 17		    ST		    Y POSITION
   879 149C 70		    CLR
   880 149D E3		    XS	   VX
   881 149E 84 0B	    BZ	   MP11     ANY X MOVEMENT?
   882 14A0 2A 0C 23 MP10   DCI    XPOS     UPDATE X POSIT & MASK
   883 14A3 41		    LR	   A,X
   884 14A4 17		    ST
   885 14A5 69		    LISL   1
   886 14A6 4D		    LR	   A,I
   887 14A7 17		    ST
   888 14A8 4C		    LR	   A,S
   889 14A9 17		    ST
   890 14AA 28 15 0A MP11   PI	   MVC	    DISPLAY NEW POSITION
   891 14AD 70	     MP12   CLR
   892 14AE B1		    OUTS   1	    Clear port 1
   893 14AF 2B		    NOP		    3 NOP's for FCC
   894 14B0 2B		    NOP		    Do not remove
   895 14B1 2B		    NOP		    for any reason
   896 14B2 A1		    INS    1	    Get buttons
   897 14B3 21 01	    NI	   H'1'     Strip to desired one
   898 14B5 2A 0C 27	    DCI    BFLG    To button flag
   899 14B8 70		    CLR
   900 14B9 94 05	    BNZ    MP13    Any button input?
   901 14BB 17		    ST		   No, reset edge flag
   902 14BC 29 14 02 MP14   JMP    MAP0    And go try again
   903 14BF 0E	     MP13   LR	   Q,DC    Save address
   904 14C0 8C		    XM		   Flag in W/STATUS
   905 14C1 94 FA	    BNZ    MP14    Previous input?
   906 14C3 71		    LIS    H'1'    No, reset flag
   907 14C4 0F		    LR	   DC,Q    Recover address
   908 14C5 17		    ST		   And reset
   909 14C6 70	     CON    CLR
   910 14C7 50		     LR      0,A     Set counter (Y conversion)
   911 14C8 42	     CON1    LR      A,Y     Get Y coordinate
   912 14C9 25 09	     CI      YTST    Compare W/test value
   913 14CB 82 0A	     BC      CON2    Y LE test value?
   914 14CD 40		     LR      A,0     No, increment counter
   915 14CE 1F		     INC
   916 14CF 50		     LR      0,A
   917 14D0 20 F6	     LI      -H'A'
   918 14D2 C2		     AS      Y
   919 14D3 52		     LR      Y,A     Y←Y-H'A'
   920 14D4 90 F3	     BR      CON1    Go back and try agian
   921 14D6 40	     CON2    LR      A,0     Get counter
   922 14D7 52		     LR      Y,A     Y now  (0-7):(top-bottom)
   923 14D8 C1		     AS      X
   924 14D9 21 01	     NI      H'1'
   925 14DB 84 E0	     BZ      MP14    On a legal square?
   926 14DD 2A 0C 21	     DCI     COL0    Yes
   927 14E0 70		     CLR
   928 14E1 8C		     XM		     Flag in W/STATUS
   929 14E2 81 07	     BP      CON3    Machine plays RED?
   930 14E4 77		     LIS     H'7'    Yes
   931 14E5 E2		     XS      Y
   932 14E6 52		     LR      Y,A     Y←7-Y
   933 14E7 77		     LIS     H'7'
   934 14E8 E1		     XS      X
   935 14E9 51		     LR      X,A     X←7-X
   936 14EA 42	     CON3    LR      A,Y
   937 14EB 12		     SR      1
   938 14EC 54		     LR      VY,A    VY reg (BYTENO)←(1/2*(7-Y)
   939 14ED 2A 15 02	     DCI     BYDT    To BYTE data
   940 14F0 41		     LR      A,X     Get X coord.
   941 14F1 8E		     ADC	     Add offset to base address
   942 14F2 16		     LM		     Get byte
   943 14F3 53		     LR      VX,A    Save byte into VX reg
   944 14F4 2B		     NOP
   945 14F5 2B		    NOP
   946 14F6 2B		    NOP
   947 14F7 2B		    NOP
   948 14F8 28 16 2E	    PI	   MWAD    WAIT, THEN UPDATE
   949 14FB 28 16 F9	    PI	   ENIN    ENABLE INTERRUPT DRIVEN UPDATE
   950 14FE 28 40 BC	    PI	   POPS    POP RETURN ADDRESS
   951 1501 0C		    PK		   AND RETURN
   952		     *-*-*- Data for byte values (X coord. conversions)
   953 1502 08 80    BYDT    DC      H'0880'
   954 1504 04 40	     DC      H'0440'
   955 1506 02 20	     DC      H'0220'
   956 1508 01 10	     DC      H'0110'
   957		     *-*-*- MVC Set or remove cursor
   958 150A 08	     MVC    LR	   K,P	   SAVE RETURN ADDRESS
   959 150B 2A 0C 23	    DCI    XPOS
   960 150E 16		    LM
   961 150F 50		    LR	   0,A	   SAVE X IN R0
   962 1510 62		    LISU   2
   963 1511 6B		    LISL   3
   964 1512 16		    LM
   965 1513 5D		    LR	   I,A
   966 1514 16		    LM
   967 1515 5E		    LR	   D,A	   LEAD IN SP23,TRAIL IN SP24
   968 1516 25 26	   CI	 YPOS
   969 1518 16		    LM		   GET Y COORDINATE
   970 1519 2A 0C 30	    DCI    H'0C30' DCO TO OBJ0 BASE ADDRESS
   971 151C 8E		    ADC		   ADD 8 X Y COORD (W/MAX FOR Y
   972 151D 8E		    ADC		   OVER H'40', CANNOT USE "CUTE"
   973 151E 8E		    ADC		   TRICKS HERE--AND FOR SPEED,
   974 151F 8E		    ADC		   WE JUST USE STRAIGHT ADC'S).
   975 1520 8E		    ADC
   976 1521 8E		    ADC
   977 1522 8E		    ADC
   978 1523 8E		    ADC
   979 1524 40		    LR	   A,0	   GET X OFFSET
   980 1525 8E		    ADC		   AND ADD IT IN
   981 1526 73		    LIS    CHT
   982 1527 50		    LR	   0,A	  SET COUNT FOR TRANSFER
   983 1528 0E	     MVC1   LR	   Q,DC    SAVE ADDRESS IN Q REG
   984 1529 02		    LR	   A,QU    GET HO ADDRESS
   985 152A 25 0E	    CI	   H'E'
   986 152C 94 09	    BNZ    MVC2    AT BOTTOM OF OBJ0
   987 152E 03		    LR	   A,QL    DEFINITELY.
   988 152F 25 0F	    CI	   H'F'
   989 1531 82 04	    BC	   MVC2    PAST BOTTOM?
   990 1533 7F		    LIS    H'F'    YES.
   991 1534 06		    LR	   QU,A    RESET HO ADDRESS
   992 1535 0F		    LR	   DC,Q    AND RESET DCO ACCORDINGLY (FOR OBJ1)
   993 1536 4D	     MVC2   LR	   A,I	   GET LEAD MASK BYTE
   994 1537 0E		    LR	   Q,DC    SAVE DCO
   995 1538 8C		    XM		   XOR IN CURSOR
   996 1539 0F		    LR	   DC,Q    RECOVER ADDRESS
   997 153A 17		    ST		   AND RESET THAT BYTE
   998 153B 0E		    LR	   Q,DC    SAVE ADDRESS AGAIN
   999 153C 4E		    LR	   A,D	   GET TRAILING MASK BYTE
  1000 153D 8C		    XM		   XOR IN BITS
  1001 153E 0F		    LR	   DC,Q    RECOVER ADDRESS
  1002 153F 17		    ST		   AND RESET DATA
  1003 1540 76		    LIS    H'6'
  1004 1541 8E		    ADC		   SET TO NEXT DESTINATION
  1005 1542 30		    DS	   0	  DECREMENT COUNTER
  1006 1543 94 E4	    BNZ    MVC1    DONE?
  1007 1545 0C		    PK		   YES, RETURN
  1008		     *-*-*- AMAP Mapping joystick readings to velocities
  1009 1546 40	     AMAP   LR	 A,0	 GET READING
  1010 1547 25 02	    CI	 H'2'
  1011 1549 92 05	    BNC  AMP1	 VAL LE H'1'?
  1012 154B 20 FF	    LI	 H'FF'	 YES.
  1013 154D 90 07	    BR	 AMP2
  1014 154F 25 C6    AMP1   CI	 H'C6'
  1015 1551 70		    CLR
  1016 1552 82 02	    BC	 AMP2	 VAL GT 197?
  1017 1554 71		    LIS  H'1'	 YES, VELOCITY = 1
  1018 1555 1C	     AMP2   POP		 RETURN
  1019		     *-*-*- BLNK  Blinking routine
  1020 1556 08	     BLNK   LR	     K,P
  1021 1557 2A 0C 28	     DCI     BLNF    Test BLINK flag
 **OPERATOR SYNTAX    LINE #  1022
  1022
  1023 155A 70		     CLR
  1024 155B 8C		     XM
  1025 155C 84 37	     BZ      BLN4    Need to blink?
  1026 155E 62		     LISU    2
  1027 155F 6B		     LISL    3
  1028 1560 16		     LM		     Yes
  1029 1561 5D		     LR      I,A     Get X value
  1030 1562 16		     LM
  1031 1563 5E		     LR      D,A     and Y value to blink
  1032 1564 2A 0C 21	     DCI     COL0
  1033 1567 70		     CLR
  1034 1568 8C		     XM
  1035 1569 84 07	     BZ      BLN0    Need to reverse?
  1036 156B 77		     LIS     H'7'
  1037 156C EC		     XS      S
  1038 156D 5D		     LR      I,A
  1039 156E 77		     LIS     H'7'
  1040 156F EC		     XS      S
  1041 1570 5E		     LR      D,A
  1042 1571 2A 0B E0 BLN0    DCI     H'0C30'-H'50'    DC0 TO OBJ0-H'50'
  1043 1574 6C		     LISL    4
  1044 1575 75		     LIS     H'5'
  1045 1576 15		     SL      4
  1046 1577 8E	     BLN1    ADC		      Add off-set
  1047 1578 3C		     DS      S
  1048 1579 81 FD	     BP      BLN1	     Added enough?
  1049 157B 0E		     LR      Q,DC	     Yes
  1050 157C 02		     LR      A,QU	     Get H0 address
  1051 157D 25 0E	     CI      H'E'
  1052 157F 94 03	     BNZ     BLN2	     Need reset?
  1053 1581 7F		     LIS     H'F'	     Yes
  1054 1582 06		     LR      QU,A
  1055 1583 0F	     BLN2    LR      DC,Q
  1056 1584 6B		     LISL    3
  1057 1585 4C		     LR      A,S
  1058 1586 8E		     ADC		     Add off-set
  1059 1587 73		     LIS     H'3'
  1060 1588 50		     LR      0,A	     Set counter
  1061 1589 0E	     BLN3    LR      Q,DC
  1062 158A 20 C0	     LI      H'C0'
  1063 158C 8C		     XM
  1064 158D 0F		     LR      DC,Q
  1065 158E 17		     ST
  1066 158F 77		     LIS     H'7'
  1067 1590 8E		     ADC		     Next one to blink
  1068 1591 30		     DS      0		     Decrement counter
  1069 1592 94 F6	     BNZ     BLN3	     Done?
  1070 1594 0C	     BLN4    PK
  1071		     *-*-*- INIT TYO UDIT TAB1 TAB2 KING REDP BLKP POIN YMF SKL
  1072 1595 30	     INIT   DC	    H'30'   OBJ0 L.O.RP
  1073 1596 10		    DC	    H'10'   OBJ1 L.O. RP
  1074 1597 5F		     DC      H'5F'   TEXT LOW ORDER ROM
  1075 1598 8C		    DC	    H'8C'   OBJ0 H.O.RP+COLOR
  1076 1599 8F		    DC	    H'8F'   OBJ1    H.O.RP
  1077 159A EE		     DC      H'EE'
  1078 159B 48		    DC	    H'48'   OBJ0 DELTA X ---
  1079 159C 48		    DC	    H'48'   OBJ1 DELTA X---
  1080 159D 70		    DC	    H'70'   TEXT OBJECT DELTA X
  1081 159E 3C	     TY0   DC	   H'3C'   OBJ0 DELTA Y ----
  1082 159F 14		    DC	    H'14'  OBJ1 DELTA Y ---
  1083 15A0 07		    DC	    H'07'  TEXT OBJECT DELTA Y
  1084 15A1 0D		    DC	    H'0D'   OBJ0-X-CO
  1085 15A2 0D		    DC	    H'0D'   OBJ1 X-CO
  1086 15A3 0D		    DC	    H'0D'   TEXT OBJECT X COORD
  1087 15A4 48		    DC	    H'48'   OBJ0 Y-VALUE L.O.A
  1088 15A5 C0		    DC	    H'C0'   OBJ1 Y-VALUE L.O.A
  1089 15A6 26		    DC	    H'26'   TEXT OBJECT Y VAL LO A
  1090 15A7 00		    DC	    H'00'   OBJ0 Y-VALUE H.0 &X-ORDER
  1091 15A8 01		    DC	    H'01'   OBJ1- Y-VAL H.O.$X-ORDER
  1092 15A9 82		    DC	    H'82'   TEXT OBJ INITIALLY OFF
  1093 15AA 30	     UDIT   DC	    H'30'
  1094 15AB 10		    DC	    H'10'
  1095 15AC 5F		    DC	    H'5F'
  1096 15AD 8C		    DC	    H'8C'
  1097 15AE 8F		    DC	    H'8F'
  1098 15AF EE		    DC	    H'EE'
  1099 15B0 3C		     DC      H'3C'
  1100 15B1 14		     DC      H'14'
  1101 15B2 07		     DC      H'07'
  1102 15B3 0F 10    TAB1   DC	    H'0F10' BYTE 3
  1103 15B5 0D 70	    DC	    H'0D70' BYTE 2
  1104 15B7 0C D0	    DC	    H'0CD0' BYTE 1
  1105 15B9 0C 30	    DC	    H'0C30' BYTE 0
  1106 15BB 56	     TAB2   DC	  D'86'   RELATIVE SQUARE POSITION TABLE
  1107 15BC 54		    DC	    D'84'
  1108 15BD 52		    DC	    D'82'
  1109 15BE 50		    DC	    D'80'
  1110 15BF 07		    DC	    D'07'
  1111 15C0 05		    DC	    D'05'
  1112 15C1 03		    DC	    D'03'
  1113 15C2 01		    DC	    D'01'
  1114 15C3 5A	     KING   DC	    B'01011010'     KING'S CROWN
  1115 15C4 3C		    DC	    B'00111100'
  1116 15C5 18		    DC	    B'00011000'
  1117 15C6 3C	     REDP   DC	    B'00111100'     RED PIECE
  1118 15C7 7E		    DC	    B'01111110'
  1119 15C8 7E		    DC	    B'01111110'
  1120 15C9 7E		    DC	    B'01111110'
  1121 15CA 3C		    DC	    B'00111100'
  1122 15CB 3C	     BLKP   DC	    B'00111100'     BLACK PIECE
  1123 15CC 42		    DC	    B'01000010'
  1124 15CD 42		    DC	    B'01000010'
  1125 15CE 42		    DC	    B'01000010'
  1126 15CF 3C		    DC	    B'00111100'
  1127 15D0 0C	     POIN   DC	    B'00001100'
  1128 15D1 06		    DC	    B'00000110'
  1129 15D2 03		    DC	    B'00000011'
  1130 15D3 01		    DC	    B'00000001'
  1131		     *-*-*- YMF
  1132 15D4 05 13    YMF    DC	    H'0513' Y0ur move
  1133 15D6 03 00	    DC	    H'0300' U-
  1134 15D8 29 13	    DC	    H'2913' MO
  1135 15DA 2F 0B	    DC	    H'2F0B' VE
  1136 15DC 00		    DC	    H'00'   -
  1137 15DD 1D		    DC	    H'1D'   F
  1138 15DE 01 09	    DC	    H'0109' IR
  1139 15E0 21 07	    DC	    H'2107' ST
  1140 15E2 00		    DC	    H'00'   -
  1141 15E3 35		    DC	    H'35'   ?
  1142 15E4 00		    DC	    H'00'   -
  1143 15E5 00		    DC	    H'00'   -
  1144 15E6 00		    DC	    H'00'   -
  1145 15E7 00		    DC	    H'00'   -
  1146 15E8 05 00	    DC	    H'0500' Y-
  1147 15EA 13 09	    DC	    H'1309' OR
  1148 15EC 00		    DC	    H'00'   -
  1149 15ED 2B		    DC	    H'2B'   N
  1150		     *-*-*-*-*-*-*-*-*-*-*-*-*-
  1151		     *-*-*- SKL Skill text
  1152 15EE 31 19    SKL    DC	    H'3119' CHoose    key
  1153 15F0 13 13	    DC	    H'1313' OO
  1154 15F2 21 0B	    DC	    H'210B' SE
  1155 15F4 00		    DC	    H'00'   -
  1156 15F5 00		    DC	    H'00'   -
  1157 15F6 00		    DC	    H'00'   -
  1158 15F7 00		    DC	    H'00'   -
  1159 15F8 15 0B	    DC	    H'150B' KE
  1160 15FA 05 00	    DC	    H'0500' Y-
  1161 15FC 00		    DC	    H'00'   -
  1162 15FD 00		    DC	    H'00'   -
  1163 15FE 07 13	    DC	    H'0713' TOm
  1164 1600 29 00	    DC	    H'2900' M-
  1165 1602 00		    DC	    H'00'   -
  1166 1603 00		    DC	    H'00'   -
  1167 1604 00		    DC	    H'00'   -
  1168 1605 00		    DC	    H'00'   -
  1169 1606 00		    DC	    H'00'   -
  1170 1607 00		    DC	    H'00'   -
  1171 1608 00		    DC	    H'00'   -
  1172 1609 07		    DC	    H'07'   T
  1173 160A 00		    DC	    H'00'   -
  1174 160B 00		    DC	    H'00'   -
  1175 160C 00		    DC	    H'00'   -
  1176 160D 00		    DC	    H'00'   -
  1177 160E 1F 01    DICK   DC	    H'1F01' DIck
  1178 1610 31 15	    DC	    H'3115' CK
  1179 1612 00		    DC	    H'00'   -
  1180 1613 00		    DC	    H'00'   -
  1181 1614 00		    DC	    H'00'   -
  1182 1615 00		    DC	    H'00'   -
  1183 1616 00		    DC	    H'00'   -
  1184 1617 00		    DC	    H'00'   -
  1185 1618 00		    DC	    H'00'   -
  1186 1619 1F		    DC	    H'1F'   D
  1187 161A 00		    DC	    H'00'   -
  1188 161B 00		    DC	    H'00'   -
  1189 161C 00		    DC	    H'00'   -
  1190 161D 00		    DC	    H'00'   -
  1191 161E 19 11    HARY   DC	    H'1911' HArry
  1192 1620 09 09	    DC	    H'0909' RR
  1193 1622 05 00	    DC	    H'0500' Y-
  1194 1624 00		    DC	    H'00'   -
  1195 1625 00		    DC	    H'00'   -
  1196 1626 00		    DC	    H'00'   -
  1197 1627 00		    DC	    H'00'   -
  1198 1628 00		    DC	    H'00'   -
  1199 1629 19		    DC	    H'19'   H
  1200 162A 00		    DC	    H'00'   -
  1201 162B 00		    DC	    H'00'   -
  1202 162C 00		    DC	    H'00'   -
  1203 162D 00		    DC	    H'00'   -
  1204		     *-*-*-*- MAUD WAIT, THEMN UPDATE, ANND KEEP THE
  1205		     * XZOOM BIT SET PROPERLY DURING DISPLAY MAINTENANCE
  1206 162E 08	     MWAD    LR      K,P
  1207 162F 28 40 A9	     PI      PUSH
  1208 1632 28 45 01	     PI      WAIT
  1209 1635 2A 0F EA	     DCI     CMRG    DCO TO RPOG COPY COMREG
  1210 1638 20 01	     LI      MSK     MASK IN
  1211 163A 8C		     XM		     TURN OFF ZOOM
  1212 163B 2A 08 F7	     DCI     H'8F7'  IN THE UM1 COPY
  1213 163E 17		     ST		     ONLY
  1214 163F 28 42 4D	     PI      UDAT    NOW DO UPDATE
  1215 1642 20 34	     LI      XZOP    SET LINE FOR RESTORE ZOOM
  1216 1644 2A 08 FB MWD1    DCI     H'8FB'  DCO TO CURRENT LINE
  1217 1647 8D		     CM		     COMPARE
  1218 1648 94 FB	     BNZ     MWD1    REACHED IT YET?
  1219 164A 2A 0F EA	     DCI     CMRG    YES
  1220 164D 16		     LM
  1221 164E 2A 08 F7	     DCI     H'8F7'  NOW RESET UM1 COPY
  1222 1651 17		     ST
  1223 1652 28 40 BC	     PI      POPS    POP RETURN ADDRESS
  1224 1655 0C		     PK		     AND RETURN
  1225		       ORG  H'1680'  INHR ENIN DAI SCRD
  1226		     *-*-INHR Interrupt handler, saves and restores data
  1227 1680 58	     INHR   LR	    8,A     SAVE ACC
  1228 1681 0A		    LR	    A,IS
  1229 1682 66		    LISU    O'6'
  1230 1683 68		    LISL    O'0'
  1231 1684 5D		    LR	    I,A     SAVE A IN REG24
  1232 1685 02		    LR	    A,QU
  1233 1686 5D		    LR	    I,A     SAVE QU IN REG25
  1234 1687 03		    LR	    A,QL
  1235 1688 5D		    LR	    I,A     SAVE QL IN REG26
  1236 1689 49		    LR	    A,J
  1237 168A 5D		    LR	    I,A     SAV IN REG27
  1238 168B 2C		    XDC
  1239 168C 0E		    LR	    Q,DC    GET DC
  1240 168D 2A 0F B0	    DCI     H'0FB0' GET FREE RAM ADDR.
  1241 1690 02		    LR	    A,QU    SAVE ORIGINAL DC1
  1242 1691 17		    ST
  1243 1692 03		    LR	    A,QL
  1244 1693 17		    ST
  1245 1694 2C		    XDC
  1246 1695 0E		    LR	    Q,DC
  1247 1696 2C		    XDC
  1248 1697 00		    LR	    A,KU
  1249 1698 17		    ST
  1250 1699 01		    LR	    A,KL
  1251 169A 17		    ST		    SAVE KL
  1252 169B 4A		    LR	    A,HU    UPPER H
  1253 169C 17		    ST		    SAVE IT
  1254 169D 4B		    LR	    A,HL
  1255 169E 17		    ST		    SAVE H
  1256 169F 1E		    LR	    J,W
  1257 16A0 49		    LR	    A,J
  1258 16A1 17		    ST		    SAVE W
  1259 16A2 08		    LR	    K,P
  1260 16A3 00		    LR	    A,KU
  1261 16A4 17		    ST		    SAVE PCU
  1262 16A5 01		    LR	    A,KL
  1263 16A6 17		    ST		    SAVE PCL
  1264 16A7 02		    LR	    A,QU    SAVE DC0 ORIGINAL
  1265 16A8 17		    ST
  1266 16A9 03		    LR	    A,QL
  1267 16AA 17		    ST
  1268 16AB 2A 0F EA	     DCI     CMRG
  1269 16AE 20 01	     LI      MSK
  1270 16B0 8C		     XM
  1271 16B1 2A 08 F7	     DCI     H'8F7'
  1272 16B4 17		     ST
  1273 16B5 28 42 4D	    PI	    UDAT    UPTE DISPLAY
  1274 16B8 20 34	     LI      XZOP
  1275 16BA 2A 08 FB INH1    DCI     H'8FB'
  1276 16BD 8D		     CM
  1277 16BE 94 FB	     BNZ     INH1
  1278 16C0 2A 0F EA	     DCI     CMRG
  1279 16C3 16		     LM
  1280 16C4 2A 08 F7	     DCI     H'8F7'
  1281 16C7 17		     ST
  1282		     *
  1283		     *	 RESTORE ALL REGISTERS
  1284		     *
  1285 16C8 2A 0F B0	    DCI     H'0FB0'
  1286 16CB 16		    LM
  1287 16CC 06		    LR	    QU,A    GET DC1
  1288 16CD 16		    LM
  1289 16CE 07		    LR	    QL,A
  1290 16CF 2C		    XDC
  1291 16D0 0F		    LR	    DC,Q    RESTORE DC1
  1292 16D1 2C		    XDC
  1293 16D2 72		    LIS     H'2'
  1294 16D3 8E		    ADC		    BYPASS 'K' SAVED AREA
  1295 16D4 16		    LM		    GET HU
  1296 16D5 5A		    LR	    HU,A    RESTORE HU
  1297 16D6 16		    LM
  1298 16D7 5B		    LR	    HL,A    RESTORE HL
  1299 16D8 16		    LM		    GET W
  1300 16D9 59		    LR	    J,A
  1301 16DA 1D		    LR	    W,J     RESTORE IT
  1302 16DB 16		    LM		    GET PC1 HO
  1303 16DC 04		    LR	    KU,A
  1304 16DD 16		    LM
  1305 16DE 05		    LR	    KL,A
  1306 16DF 09		    LR	    P,K     RESTORE PC1
  1307 16E0 16		    LM
  1308 16E1 06		    LR	    QU,A
  1309 16E2 16		    LM
  1310 16E3 07		    LR	    QL,A
  1311 16E4 2A 0F B2	    DCI     H'FB2'	  PT TO K
  1312 16E7 16		    LM		    GET KU
  1313 16E8 04		    LR	    KU,A
  1314 16E9 16		    LM
  1315 16EA 05		    LR	    KL,A    RESTORE K
  1316 16EB 0F		    LR	    DC,Q    RESTORE DC0
  1317		     *
  1318		     *	 NOW RESTORE J,Q,A FROM SCRATCH PAD
  1319		     *
  1320 16EC 66		    LISU    O'6'
  1321 16ED 6B		    LISL    O'3'
  1322 16EE 4E		    LR	    A,D     GET J
  1323 16EF 59		    LR	    J,A
  1324 16F0 4E		    LR	    A,D   GET QL
  1325 16F1 07		    LR	    QL,A
  1326 16F2 4E		    LR	    A,D
  1327 16F3 06		    LR	    QU,A    RESTORE QU
  1328 16F4 4E		    LR	    A,D     GET ISAR
  1329 16F5 0B		    LR	    IS,A    RESTORE ISAR
  1330 16F6 48		    LR	    A,8     RESTORE A
  1331 16F7 1B		    EI		    INT. ENABLE
  1332 16F8 1C		    POP
  1333		     *-*-*- Interrupt enable for update
  1334 16F9 20 16    ENIN   LI	    INHR:
  1335 16FB BC		    OUTS    H'C'
  1336 16FC 20 80	    LI	    INHR.
  1337 16FE BD		    OUTS    H'D'    SET INTERRUPT VECTOR
  1338 16FF 2A 08 F0	    DCI     H'8F0'
  1339 1702 20 F5	    LI	    ULIN
  1340 1704 17		    ST		    SET INTERRUPT LINE
  1341 1705 2A 0F EA	    DCI     CMRG    DCO TO PROG COPY COMREG
  1342 1708 0E		    LR	    Q,DC    SAVE ADDRESS IN Q RES
  1343 1709 78		    LIS     H'8'
  1344 170A 8B		    OM
  1345 170B 0F		    LR	    DC,Q
  1346 170C 17		    ST		    IN PROGRAM COPY
  1347 170D 2A 08 F7	    DCI     H'8F7'
  1348 1710 17		    ST		    DITTO UM1 COPY
  1349 1711 71		    LIS     H'1'
  1350 1712 BE		    OUTS    H'E'    ENABLE SMI...
  1351 1713 1B		    EI		    ENABLE CPU
  1352 1714 1E		    LR	    J,W     SAVE SAME STATUS
  1353 1715 1C		    POP		    AND RETURN
  1354		     *-*-*- Interrupt disable
  1355 1716 1A	     DAI    DI		    DISABLE CPU INTERRUPT
  1356 1717 1E		    LR	    J,W     SET J ACCORDINGLY
  1357 1718 2A 0F EA	    DCI     CMRG    DCO TO PROG COPY COMREG
  1358 171B 0E		    LR	    Q,DC    SAVE ADDRESS
  1359 171C 78		    LIS     H'8'
  1360 171D 18		    COM
  1361 171E 8A		    NM		    TURN OFF BIT
  1362 171F 0F		    LR	    DC,Q    IN THE
  1363 1720 17		    ST		    PROGRAM COPY,
  1364 1721 2A 08 F7	    DCI     H'8F7'
  1365 1724 17		    ST		    AND THE UM1 COPY
  1366 1725 70		    CLR
  1367 1726 BE		    OUTS    H'E'    NOW DISABLE SMI
  1368 1727 1C		    POP		    AND RETURN
  1369		     *-*-*- SCRD  SC to RAM direct
  1370 1728 08	     SCRD    LR      K,P	     SC TO RAM direct
  1371 1729 28 40 A9	     PI      PUSH
  1372 172C 63		     LISU    PLOC
  1373 172D 68		     LISL    0
  1374 172E 78		     LIS     H'8'
  1375 172F 50		     LR      0,A
  1376 1730 28 17 3E	     PI      SCRL
  1377 1733 64		     LISU    KLOC
  1378 1734 68		     LISL    0
  1379 1735 78		     LIS     H'8'
  1380 1736 50		     LR      0,A
  1381 1737 28 17 3E	     PI      SCRL
  1382 173A 28 40 BC	     PI      POPS
  1383 173D 0C		     PK
  1384 173E 08	     SCRL    LR      K,P	     Used by SCRA and SCRD
  1385 173F 4D	     SCR3    LR      A,I
  1386 1740 17		     ST
  1387 1741 30		     DS      0
  1388 1742 94 FC	     BNZ     SCR3
  1389 1744 0C		     PK
	      END
 NUMBER OF ERRORS=  2
1
 J     =0009 VY    =0004 VX    =0003 HU    =000A HL    =000B Y	   =0002
 X     =0001 ISA   =0018 MWAD	162E TRAN  =43CD AMAP	1546 UDAT  =424D
 BDAT	13D9 HSAV  =0E59 RKB	12CC TABL   13EB MOBS  =0F00 TAB1   15B3
 RKB1	12D4 TAB2   15BB WMC	1200 TXC   =0FE8 MVC	150A WMCA   1262
 SHCB  =0FE2 DICK   160E WMC1	1233 MVC1   1528 WMC2	1251 MVC2   1536
 SEDC	13DE BRDJ   108D BRDK	109B REDM   12E7 REDP	15C6 BYDT   1502
 BRD1	130F MWD1   1644 BRD2	130D BRD3   130B BRD4	130A BRD5   1328
 ISE   =0029 TREE  =0E10 CLER  =4762 BDEX   13B2 TRE2  =0E20 TRE3  =0E30
 YMF	15D4 WDG   =4105 INHR	1680 INH1   16BA DAI	1716 UPI   =0FFA
 ENIN	16F9 POIN   15D0 ULIN  =00F5 WAIT  =4501 INIT	1595 UDIT   15AA
 OBJ0  =0C30 OBJ1  =0F10 ISK   =0020 MSK   =0001 BLKM	12E0 BLKP   15CB
 SKL	15EE SHL   =27C6 BFLG  =0C27 SELM   12BD WTLN  =0FE5 YBLN  =0C2A
 XBLN  =0C29 SELX  =0C22 SELY	12C2 COL0  =0C21 SEL2  =1900 COM   =08F7
 TFM	129E MJM    1287 MIM	1291 PLMD  =0E5B BCMD  =006D TCMD  =0044
 PLMF  =0EE0 PCMM   12AD TEMP  =0008 PLMV  =0ED0 OKMV	115A BKMV  =0C2C
 MYMV	12A6 YRMV   127D OKM1	1168 OKM2   1172 OKM3	117C OKM4   1186
 OKM5	118D OKM6   1197 OKM7	119E CON    14C6 DBNC  =0FEB LINE  =0FDF
 BLNF  =0C28 KING   15C3 BLNK	1556 FINM   12C7 NONO	11C6 BCNT  =0C2B
 BLN0	1571 CON1   14C8 BLN1	1577 MEN1   1335 CON2	14D6 BLN2   1583
 NON2	11CF MEN2   133B CON3	14EA BLN3   1589 NON3	11D2 MEN3   1352
 BLN4	1594 NON4   11D3 MEN4	1354 NON5   11E2 MEN5	135B MEN6   1362
 MEN7	1364 MEN8   1369 MEN9	1396 ELOC  =0005 KLOC  =0004 PLOC  =0003
 TCOL  =0080 XZOP  =0034 YPOS  =0C26 XPOS  =0C23 PMOV	1100 ISP   =001C
 INPF  =0FE3 OKPI   1115 POPS  =40BC MAP0   1402 OKP1	1118 AMP1   154F
 OKP2	1124 AMP2   1555 MAP2	144C OKP3   1126 MAP3	1450 OKP4   112D
 MAP4	145B MAP5   146B MAP7	1478 MAP8   148A MAP9	148B TIR   =45DB
 SHR   =27D3 BORD   1300 SCRD	1728 CMRG  =0FEA SCRL	173E SURP   13B3
 CURS	13FB HARY   161E CUR1	1112 CUR2   1150 SCR3	173F WMS   =4205
 CDS   =41D5 IJS   =22DB SPS   =40D0 FCS   =43D6 PUSH  =40A9 YTST  =0009
 MES0	1107 MES1   1108 CHT   =0003 PUTK   1385 PUTL	138D WAUD  =41C8
 WAU1  =41CC MAXY  =004D PLYD  =00FD PLYH  =00FC JOYI  =21AD JOYT  =0C00
 PLYT  =00FE PLY0  =0C20 TY0	159E MP01   1423 QN1	1023 QN10   103C
 MP10	14A0 ME10   139F QN11	103D MP11   14AA MP12	14AD QN13   1066
 MP13	14BF QN14   1068 MP14	14BC QN17   10D6 QN18	10D8 QN19   10DF
 MP7A	1486